package com.sztz.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sztz.entity.User;
import com.sztz.handle.BatchProvider;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.ResultSetType;
import org.apache.ibatis.mapping.StatementType;
import org.apache.ibatis.session.ResultHandler;

import java.util.List;

/**
 * 用户信息Dao层
 * @author yzy
 * @time 2022/5/26 23:13
 */
@Mapper
public interface UserDao extends BaseMapper<User> {
    /**
     * 流式查询所用用户信息
     * @param resultHandler 结果集处理方式
     * @author yzy
     * @date 2022/5/28 23:42
     **/
    @Select("select * from T_USER")
    @Options(resultSetType = ResultSetType.FORWARD_ONLY,statementType = StatementType.PREPARED,fetchSize = Integer.MIN_VALUE)
    @ResultType(User.class)
    void queryAllUser(ResultHandler<User> resultHandler);
    /**
     * 批量插入用户信息
     * @param list 主键ID
     * @param tableName 数据库表名
     * @return User 用户信息
     * @author yzy
     * @date 2022/7/27 18:27
     **/
    @InsertProvider(type= BatchProvider.class,method = "insertBatchOfTableName")
    int batchInsertUser(@Param("list") List<User> list, String tableName);
    /**
     * 根据ID查询用户信息
     * @param id 主键ID
     * @return User 用户信息
     * @author yzy
     * @date 2022/7/5 15:16
     **/
    User getUserById(Integer id);
    /**
     * 修改用户信息
     * @param user
     * @author yzy
     * @date 2022/7/5 15:16
     **/
    int updateUser(User user);

}
